home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / rpm / rpmfc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-10-22  |  5.1 KB  |  200 lines

  1. #ifndef _H_RPMFC_
  2. #define _H_RPMFC_
  3.  
  4. #undef    FILE_RCSID
  5. #include "magic.h"
  6.  
  7. /*@-exportlocal@*/
  8. /*@unchecked@*/
  9. extern int _rpmfc_debug;
  10. /*@=exportlocal@*/
  11.  
  12. /**
  13.  */
  14. typedef /*@abstract@*/ struct rpmfc_s * rpmfc;
  15.  
  16. /**
  17.  */
  18. struct rpmfc_s {
  19.     int nfiles;        /*!< no. of files */
  20.     int fknown;        /*!< no. of classified files */
  21.     int fwhite;        /*!< no. of "white" files */
  22.     int ix;        /*!< current file index */
  23.     int skipProv;    /*!< Don't auto-generate Provides:? */
  24.     int skipReq;    /*!< Don't auto-generate Requires:? */
  25.     int tracked;    /*!< Versioned Provides: tracking dependency added? */
  26.     size_t brlen;    /*!< strlen(spec->buildRoot) */
  27.  
  28.     ARGV_t fn;        /*!< (#files) file names */
  29.     ARGI_t fcolor;    /*!< (#files) file colors */
  30.     ARGI_t fcdictx;    /*!< (#files) file class dictionary indices */
  31.     ARGI_t fddictx;    /*!< (#files) file depends dictionary start */
  32.     ARGI_t fddictn;    /*!< (#files) file depends dictionary no. entries */
  33.     ARGV_t cdict;    /*!< (#classes) file class dictionary */
  34.     ARGV_t ddict;    /*!< (#dependencies) file depends dictionary */
  35.     ARGI_t ddictx;    /*!< (#dependencies) file->dependency mapping */
  36.  
  37. /*@relnull@*/
  38.     rpmds provides;    /*!< (#provides) package provides */
  39. /*@relnull@*/
  40.     rpmds requires;    /*!< (#requires) package requires */
  41.  
  42.     StringBuf sb_java;    /*!< concatenated list of java colored files. */
  43.     StringBuf sb_perl;    /*!< concatenated list of perl colored files. */
  44.     StringBuf sb_python;/*!< concatenated list of python colored files. */
  45.  
  46. };
  47.  
  48. /**
  49.  */
  50. enum FCOLOR_e {
  51.     RPMFC_BLACK            = 0,
  52.     RPMFC_ELF32            = (1 <<  0),
  53.     RPMFC_ELF64            = (1 <<  1),
  54. #define    RPMFC_ELF    (RPMFC_ELF32|RPMFC_ELF64)
  55.  
  56.     RPMFC_MODULE        = (1 <<  7),
  57.     RPMFC_EXECUTABLE        = (1 <<  8),
  58.     RPMFC_SCRIPT        = (1 <<  9),
  59.     RPMFC_TEXT            = (1 << 10),
  60.     RPMFC_DATA            = (1 << 11),    /* XXX unused */
  61.     RPMFC_DOCUMENT        = (1 << 12),
  62.     RPMFC_STATIC        = (1 << 13),
  63.     RPMFC_NOTSTRIPPED        = (1 << 14),
  64.     RPMFC_COMPRESSED        = (1 << 15),
  65.  
  66.     RPMFC_DIRECTORY        = (1 << 16),
  67.     RPMFC_SYMLINK        = (1 << 17),
  68.     RPMFC_DEVICE        = (1 << 18),
  69.     RPMFC_LIBRARY        = (1 << 19),
  70.     RPMFC_ARCHIVE        = (1 << 20),
  71.     RPMFC_FONT            = (1 << 21),
  72.     RPMFC_IMAGE            = (1 << 22),
  73.     RPMFC_MANPAGE        = (1 << 23),
  74.  
  75.     RPMFC_PERL            = (1 << 24),
  76.     RPMFC_JAVA            = (1 << 25),
  77.     RPMFC_PYTHON        = (1 << 26),
  78.     RPMFC_PHP            = (1 << 27),
  79.     RPMFC_TCL            = (1 << 28),
  80.     RPMFC_MONO                  = (1 << 6),
  81.  
  82.     RPMFC_WHITE            = (1 << 29),
  83.     RPMFC_INCLUDE        = (1 << 30),
  84.     RPMFC_ERROR            = (1 << 31)
  85. };
  86. typedef    enum FCOLOR_e FCOLOR_t;
  87.  
  88. /**
  89.  */
  90. struct rpmfcTokens_s {
  91. /*@observer@*/
  92.     const char * token;
  93.     int colors;
  94. };
  95.  
  96. /**
  97.  */
  98. typedef struct rpmfcTokens_s * rpmfcToken;
  99.  
  100. #ifdef __cplusplus
  101. extern "C" {
  102. #endif
  103.  
  104. /**
  105.  * Return helper output.
  106.  * @param av        helper argv (with possible macros)
  107.  * @param sb_stdin    helper input
  108.  * @retval *sb_stdoutp    helper output
  109.  * @param failnonzero    IS non-zero helper exit status a failure?
  110.  */
  111. int rpmfcExec(ARGV_t av, StringBuf sb_stdin, /*@out@*/ StringBuf * sb_stdoutp,
  112.         int failnonzero)
  113.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  114.     /*@modifies *sb_stdoutp, rpmGlobalMacroContext,
  115.         fileSystem, internalState @*/
  116.         /*@requires maxSet(sb_stdoutp) >= 0 @*/;
  117.  
  118. /**
  119.  * Return file color given file(1) string.
  120.  * @param fmstr        file(1) string
  121.  * @return        file color
  122.  */
  123. /*@-exportlocal@*/
  124. int rpmfcColoring(const char * fmstr)
  125.     /*@*/;
  126. /*@=exportlocal@*/
  127.  
  128. /**
  129.  * Print results of file classification.
  130.  * @todo Remove debugging routine.
  131.  * @param msg        message prefix (NULL for none)
  132.  * @param fc        file classifier
  133.  * @param fp        output file handle (NULL for stderr)
  134.  */
  135. /*@-exportlocal@*/
  136. void rpmfcPrint(/*@null@*/ const char * msg, rpmfc fc, /*@null@*/ FILE * fp)
  137.     /*@globals fileSystem @*/
  138.     /*@modifies *fp, fc, fileSystem @*/;
  139. /*@=exportlocal@*/
  140.  
  141. /**
  142.  * Destroy a file classifier.
  143.  * @param fc        file classifier
  144.  * @return        NULL always
  145.  */
  146. /*@-exportlocal@*/
  147. /*@null@*/
  148. rpmfc rpmfcFree(/*@only@*/ /*@null@*/ rpmfc fc)
  149.     /*@modifies fc @*/;
  150. /*@=exportlocal@*/
  151.  
  152. /**
  153.  * Create a file classifier.
  154.  * @return        new file classifier
  155.  */
  156. /*@-exportlocal@*/
  157. rpmfc rpmfcNew(void)
  158.     /*@*/;
  159. /*@=exportlocal@*/
  160.  
  161. /**
  162.  * Build file class dictionary and mappings.
  163.  * @param fc        file classifier
  164.  * @param argv        files to classify
  165.  * @param fmode        files mode_t array (or NULL)
  166.  * @return        0 on success
  167.  */
  168. /*@-exportlocal@*/
  169. int rpmfcClassify(rpmfc fc, ARGV_t argv, /*@null@*/ int16_t * fmode)
  170.     /*@globals fileSystem, internalState @*/
  171.     /*@modifies fc, fileSystem, internalState @*/;
  172. /*@=exportlocal@*/
  173.  
  174. /**
  175.  * Build file/package dependency dictionary and mappings.
  176.  * @param fc        file classifier
  177.  * @return        0 on success
  178.  */
  179. /*@-exportlocal@*/
  180. int rpmfcApply(rpmfc fc)
  181.     /*@modifies fc @*/;
  182. /*@=exportlocal@*/
  183.  
  184. /**
  185.  * Generate package dependencies.
  186.  * @param spec        spec file control
  187.  * @param pkg        package control
  188.  * @return        0 on success
  189.  */
  190. int rpmfcGenerateDepends(const Spec spec, Package pkg)
  191.     /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
  192.     /*@modifies pkg->cpioList, pkg->header,
  193.         rpmGlobalMacroContext, fileSystem, internalState @*/;
  194.  
  195. #ifdef __cplusplus
  196. }
  197. #endif
  198.  
  199. #endif /* _H_RPMFC_ */
  200.